package edu.neu.swc.skynet.service;

import cn.hutool.db.PageResult;
import edu.neu.swc.skynet.common.SearchParams;
import edu.neu.swc.skynet.common.TableId;
import edu.neu.swc.skynet.movie.MovieInfo;
import edu.neu.swc.skynet.movie.MovieShow;
import edu.neu.swc.skynet.vo.PageMovieShow;

import java.util.List;

/**
 * <h1>电影服务接口</h1>
 * 服务：
 *      1. 根据 TableId 查询电影详细信息
 *      2. 根据 TableId 获取商品展示信息
 *      3. 分页查询电影展示信息信息
 */
public interface IMovieService {

    /**
     * <h2>查询电影</h2>
     * 根据 TableId 查询电影详细信息
     * @param tableId 输入的电影 Id 列表
     * @return 查询到的电影详细信息列表
     * 通常情况下 列表的 size = 1
     */
    List<MovieInfo> getMovieInfoByTableId(TableId tableId);

    /**
     * <h2>查询电影（展示）</h2>
     * 根据 TableId 获取商品展示信息
     * @param tableId 输入的电影 Ids
     * @return 查询到的电影列表
     */
    List<MovieShow> getMovieShowByTableId(TableId tableId);

    /**
     * <h2>分页展示电影（展示）</h2>
     * @param page 输入的页数
     * @return 查询到的分页列表对象
     */
    PageMovieShow getMovieShowByPage(int page);

    /**
     * <h2>分页查询电影</h2>
     * 使用 Elastic Search 搜索电影
     * @param searchParams ES 专用查询对象
     * @return 分页的搜索结果
     */
    PageMovieShow searchMovieShowByPage(SearchParams searchParams);
}
